/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.apache.commons.logging;

import java.io.Serializable;
import java.lang.ref.ReferenceQueue;

/**
 * A classe ReferenceQueue é necessária em WeakHashtable, que extende Hashtable.
 * Entretanto, HashTable implementa Serializable, mas o objeto queue, criado
 * internamente com ReferenceQueue não é Serializable, o que pode gerar um erro
 * ao "desserializar" a WeakHashtable, se necessário. Esta classe, portanto,
 * extende ReferenceQueue e implementa Serializable, permitindo o correto
 * funcionamento da serialização.
 *
 * @author Evelyn
 * @author Flávio Ramalho
 * @author Saulo Soares
 * @author Theócrito
 * 
 * @since 1.1.1
 */
public class SerializableReferenceQueue extends ReferenceQueue implements Serializable {
	
	/**
	 * Quando um objeto implementa Serializable, carrega carrega consigo um número
	 * que indentifica a "versão" da classe usada durante o processo. Este número,
	 * chamado de serialVersionUID, é usado para saber se o objeto que recuperamos
	 * é de mesma versão da classe que foi utilizada ao serializamos o objeto. Este
	 * procedimento permite que os arquivos .class não sejam necessariamente os mesmos
	 * para que a serialização ocorra com sucesso. Quando este número não está presente,
	 * é calculado pela JDK como um hash SHA em cima dos nomes dos seus atributos e
	 * assinaturas dos métodos em uma ordem definida pela especificação do processo de
	 * serialização, presente na documentação de Java.
	 * 
	 * Como a classe é nova e serve apenas para tornar o objeto serializable, e é uma
	 * boa prática definir o serialVersionUID, inicializamos a variável com o valor 1L.
	 */
	private static final long serialVersionUID = 1L;
	
}
